# -*- coding : utf-8 -*-


import re
import csv
import tqdm
import json
import random
import pymysql
import requests
# import xlsxwriter
import threadpool
# import utils

from openpyxl import load_workbook, Workbook

pool = threadpool.ThreadPool(10)


intent2attitude_222 = {
    '关于产品': 0, '你怎么有我号码': 0, '审核不过-黑户': -1, '没听懂': 0,
    '已操作': 0, '系统问题-证件没带': 0, '什么时间回访': 0, '投诉': -1,
    '多次表示-客户会操作': 0, '不需要-会考虑': -1, '审核条件': 0, '系统问题-APP问题': 0,
    '特殊情况': 0, '链接短信': 0, '利息高': 0, '询问工号': 0,
    '申请渠道问题': 0, '怎么注销': 0, '还款方式': 0, '临时额度还是永久额度': 0,
    '客户会操作': 0, '身份证/银行卡没带': 0, '已激活': 0, '打电话有什么目的': 0,
    '生病': 0, '审核不过-担心通过不了': -1, '审核不过-无原因': -1, '操作问题-操作麻烦': 0, '降额问题': 0,
    '如何提升额度': 0, '下款时间': 0, '什么平台': 0, '要求挂机': 0,
    '关于活动': 0, '打的客户什么号': 0, '是否已经激活额度': 0, '语音信箱': 0,
    '不需要-不缺钱': -1, '非本人操作': -1, '怀疑平台': -1, '有人联系过': 0,
    '会考虑': 0, '优惠券使用方法': 0, '额度多少': 0, '公司在哪': 0,
    '分期期数': 0, '咨询京东其他产品': 0, '查询征信': 0, '转人工': 0, '拨打时间': 0, '有人打电话让注销金条账户': 0,
    '操作问题-不会操作': -1, '别给我打电话了': -1, '打断倾听': 0, '是否用过什么产品': 0,
    '在忙-无原因': 0, '客户咨询是否能借款': 0, '不需要-无原因': -1, '你找谁': 0,
    '是否能通过/使用': 0,
    '审核不过-年龄问题': -1, '已借款': 0, '加微信': 0, '年费问题': 0,
    '不会操作': -1, '有需要再联系': 0, '个人费用': 0, '敏感客群': 0,
    '活动期限': 0, '产品是否合规': 0, '怎么领取优惠券': 0, '激活是否必须使用': 0,
    '额度用完': 0, '产品费用': 0,  '不需要-使用其他平台': -1, '系统问题-app问题': 0,
    '资金用途': 0, '客户会考虑': 0, '提前还款': 0, '已经注销': -1,
    '怎么联系客服': 0, '系统问题-证件问题': 0, '还不起': 0, '人还是机器人': 0,
    '是否免费借款': 0, '无意向调侃用户': 0, '强烈拒绝': -1, '额度问题-额度低': 0,
    '已卸载APP': -1, '确认平台': 0, '在忙-主动邀约': 0, '在忙-有原因': 0,
    '在忙-快点说': 0, '没点过': -1, '品牌反应': 0, '我没有注册过': -1,
    '要求反馈立刻处理': 0, '没有企业': -1, '不想加陌生人': -1, '安全问题': 0,
    '激活费用': 0, '是否有销售任务': 0, '发票问题': 0, '怎么兑换': 0,
    '怀疑信息泄露': -1, '办过会员/是VIP': 0, '忘记了': -1, '还款提醒': 0,
    '担心给联系人打电话': -1, '快递问题': 0, '担心通过不了': -1, '在操作': 1,
    '担保费': 0, '生意或消费': 0, '让本人接电话': 0, '没有资金需求': -1,
}
intent2attitude_313 = {
    '电话是多少': 0, '已申请推销联名卡': 0, '单币卡还是双币卡': 0, '有甲方会员': 0, '操作问题-不会操作': -1, '操作问题-操作麻烦': 0,
    '没有网络': -1, '不需要-使用其他产品': -1, '客户反感推销': 0, '客户要求挂机': 0, '误申请': 0, '网点开卡': 0, '权益太少': -1,
    '莫名收到卡片': 0, '卡片丢失损坏': 0, '很少点外卖': 0, '不开卡可以吗': 0, '要求反馈立刻处理': 0, '怀疑信息泄露': -1, '很少用甲方': 0,
    '没听清': 0, '确认平台': 0, '加微信': 0, '客户会考虑': 0, '无态度': 0, '否定态度': 0, '肯定态度': 0, '信用卡提额': 0,
    '已申请联名卡': 0, '对甲方品牌的反应': 0, '语音信箱': 0, '有人联系过': 0, '可以注销吗': -1, '发短信': 0, '关于活动': 0,
    '公司在哪': 0, '你怎么有我号码': 0, '人还是机器人': 0, '转人工': 0, '联名卡邮寄': 0, '活动期限': 0, '合作银行': 0, '什么平台': 0,
    '不需要-不用信用卡': -1, '年费问题': 0, '审核不过-无原因': -1, '询问工号': 0, '额度太低': 0, '查询征信': 0, '打电话有什么目的': 0,
    '怀疑平台': -1, '不符合办卡条件-年龄问题': -1, '不需要-已经有卡': -1, '额度多少': 0, '没听懂': 0, '不需要-会考虑': -1, '非本人操作': -1,
    '投诉': -1, '会自己操作': 0, '办卡条件': 0, '打断倾听': 0, '在忙-快点说': 0, '不符合办卡条件': -1, '别给我打电话了': -1,
    '在忙-预约回访': 0, '在忙-没时间-无原因': 0, '在忙-没时间-有原因': 0, '不需要-无原因': -1, 'NOINTENT': 0, '联名卡使用范围': 0,
    '信用卡基础功能': 0, '关于产品': 0, '费用问题': 0, '我是要开卡吗': 0, '怎么激活': 0, '客户咨询甲方其他产品': 0, '强烈拒绝': -1
}
intent2attitude_329 = {
    '系统问题-app问题': 0, '银行卡问题': 0, '已卸载': 0, '金条费率问题': 0, '产品额度问题': 0, '拨打时间问题': 0, '下一步操作': 0,
    '发券方式': 0, '领取条件': 0, '工作原因不方便加': -1, '咨询甲方商城问题': 0, '能听到吗': 0, '加不了': -1, '加这个号码': 0,
    '怎么加': 0, '要求反馈立刻处理': 0, '怀疑信息泄露': 0, '发短信': 0, '有空再操作': 0, '年龄不符合': -1, '已经注销': -1,
    '怎么注销': -1, '不需要-会考虑': -1, '在操作': 0, '和其他服务通道区别': 0, '确认平台': 0, '在忙-无原因': 0, '关于产品': 0,
    '打电话有什么目的': 0, '没听懂': 0, '什么平台': 0, '确认加微身份': 0, '不用微信': 0, '没听清': 0, '甲方是什么': 0,
    '加微信好处': 0, '已经加过微信': 0, '在忙-快点说': 0,
    '操作问题-不会操作': -1, '不需要-不缺钱': -1, '操作问题-操作麻烦': 0, '关于活动': 0, '服务是否收费': 0, '咨询甲方其他产品': 0,
    '审核问题': 0, '不需要-无原因': -1, '客户会考虑': 0, '很少使用该产品': -1, '打断倾听': 0, '语音信箱': 0, '询问工号': 0,
    '别给我打电话了': -1, '投诉': -1, '不想加陌生人': -1, '有人联系过': 0, '额度问题': 0, '公司在哪': 0, '申请渠道问题': 0,
    '怀疑平台': -1, '非本人操作': -1, '费率问题': 0, '查询征信': 0, '你怎么有我号码': 0, '人还是机器人': 0, '怎么联系客服': 0,
    '转人工': 0, '品牌反应': 0, '在忙-主动邀约': 0, '在忙-有原因': 0, '强烈拒绝': -1, '客户要求加微信': 0, '已操作': 0,
    '没找到黄色服务通知': 0, '微信号不是手机号': -1, '没有网络': -1, '客户没有企业微信': -1,
}
intent2attitude_341 = {
    '是否进口药都可以报销': 0, '是否收费': 0, '没钱': -1, '确认平台': 0,
    '操作问题-操作麻烦': -1, '二次不需要': -1, '有没有风险': 0, '没有网络': -1,
    '非本人操作': -1, '理赔问题': 0, '售后问题': 0, '什么软件': 0,
    '以前有疾病现在好了，能买吗': 0, '是否属于商业保险': 0,
    '赔过以后还能续保吗': 0, '挂断后操作': 0, '同业': 0, '报销比例': 0,
    '你是在卖保险吗': 0, '需要连续续保': 0, '有人联系过我': 0, '短信点不开': -1,
    '三次在忙': 0, '投保有什么好处': 0, '侵犯我隐私了': -1, '在操作': 0,
    '哪家公司承保': 0, '询问工号': 0, '操作问题-操作目的': 0, '等待期': 0,
    '是否全国内都保': 0, '重大疾病都有哪些': 0, '停一下，听我说': 0, '在忙-可协商': 0,
    '都有什么保障': 0, '什么是百万医疗、自费药': 0, '对保险有了解': 0, '医疗垫付问题': 0,
    '保险类型': 0, '发票问题': 0, '办理方式': 0, '你们怎么还卖保险': 0,
    '什么平台': 0, '理赔标准': 0, '发短信': 0, '产品属性': 0,
    '是否与现有保险冲突': 0, '不愿意点链接': -1, '保障时效': 0, '赠险相关问题': 0,
    '智能语音客服': 0, '我买不了保险': -1, '保费问题': 0, '保费缴存周期': 0,
    '确认是否承保': 0, '语音信箱': 0, '联系方式': 0, '客户会考虑': 0,
    '你怎么有我号码': 0, '不可理赔条件': 0, '要钱就不要了': -1, '是人还是机器人': 0,
    '第2个月保费': 0, '买保险的意义': 0, '什么医疗保障': 0, '是否返本': 0,
    '在忙-预约回访': 0, '非本人': -1, '加微信': 0, '公众号问题': 0,
    '重说': 0, '保障问题': 0, '我没有买过': -1, '操作问题-不会操作': -1,
    '生效日期': 0, '年龄不符': -1, '我有医社保了': 0, '什么产品': 0,
    '投诉': -1, '来源点错了': -1, '投保条件': 0, '理赔流程': 0,
    '没听懂': 0, '有需要再联系': 0, '非本人接听': -1, '续保费用': 0,
    '退款问题': 0, '是否可以为家人投保': 0, '不需要-暂时/先': -1, '公司在哪': 0,
    '已经取消了': -1, '不需要-无原因': -1, '你是谁': 0, '已有其他商业保险': 0,
    '保障时效到期': 0, '什么时间联系': 0, '可理赔条件': 0, '这是一个什么样的保险': 0,
    '保障额度': 0, '关于免赔额': 0, '报销信息': 0, '怀疑号码': -1,
    '强烈拒绝': -1, '在忙-快点说': 0, '非本人操作轮询': -1, '已经买过该产品': 0,
    '没收到短信': -1, '医保问题': 0, '关于活动': 0, '三次不需要': -1,
    '缴费问题': 0, '办理是否要体检': 0, '在忙-必须挂机': 0, '挂断后操作轮询': 0,
    '我去其他渠道买': 0, '客户要求转人工': 0, '暂时不想操作': -1, '哪些医院可以报销': 0,
    '住院都能报吗': 0, '断缴问题': 0, '打电话的目的': 0, '询问绿通': 0,
    '担心自己被扣费': 0, '如何查询保单': 0, '无意向调侃': 0, '续期交过了': 0,
    '疑难问题': 0, '反驳营销介绍': 0, '拒绝福利': -1, '已经关注公众号': 0,
    '希望从头引导操作': 0, '关于电话医生': 0, '关于体检卡': 0, '不用微信': -1,
    '没找到黄色服务通知': 0, '什么专享特权': 0, '什么是活跃度分数': 0,
    '跟家人沟通': 0, '是否有扣费提醒': 0, '担心涨价': 0, '不相信电话营销': -1,
    '升级过了': 0, '不想升级': -1, '请求代办': 0,
}
intent2attitude_354 = {
    '父母不在了': -1, '岁数太大-听不懂': 0, '参观人群': 0, '养老社区范围之外': 0, '是否房产中介': 0, '确认来电地点': 0,
    '养老社区具体位置': 0, '复杂问题': 0, '岁数太大': 0, '已经参加过其他养老社区': 0, '与竞品的比较': 0, '已经了解过了': 0,
    '参加条件-费用问题': 0, '已经参观过了': 0, '目前不在表述地址': 0, '参加条件-户籍问题': 0, '参观时间': 0, '同业': 0,
    '医疗标准': 0, '主要为父母考虑': 0, '陪护要求': 0, '医疗要求': 0, '休闲要求': 0, '饮食要求': 0, '住宿要求': 0,
    '确认需要购买': 0, '是否还有额外费用': 0, '不记得留下信息': 0, '养老社区是不是可以入住': 0, '退款问题': -1, '年金保险相关问题': 0,
    '月费相关问题': 0, '养老社区好处是啥': 0, '收费低': 0, '收费高': 0, '条件差': 0, '是否有低标准的配置': 0, '没钱': -1,
    '你是在卖保险吗': 0, '有需要再联系': 0, '加微信': 0, '发短信': 0, 'NOINTENT': 0, '陪护条件': 0, '陪护费用': 0, '医疗条件': 0,
    '医疗费用': 0, '休闲条件': 0, '休闲费用': 0, '饮食条件': 0, '饮食费用': 0, '住宿条件': 0, '住宿费用': 0, '参加条件': 0,
    '参加费用': 0, '与养老院的区别': 0, '不是考虑养老的时候': -1, '参加方式': 0, '不能去参观': -1, '参观费用': 0, '参观方式': 0,
    '预约参观方式': 0, '养老社区位置太远': 0, '怀疑信息泄漏': -1, '侵犯我隐私了': -1, '询问工号': 0, '怀疑号码': 0, '你怎么有我号码': 0,
    '强烈拒绝': -1, '别给我打电话了': -1, '投诉': -1, '有人联系过': 0, '智能语音客服': 0, '语音信箱': 0, '是人还是机器人': 0,
    '转人工': 0, '什么活动': 0, '确认平台': 0, '什么平台': 0, '打电话有什么目的': 0, '没听清': 0, '没听懂': 0, '打断倾听': 0,
    '联系方式': 0, '什么时间回访': 0, '在忙-预约回访': 0, '在忙-快点说': 0, '在忙-必须挂机': 0, '在忙-可协商': 0, '不需要-会考虑': -1,
    '不需要-无原因': -1, '无态度': 0, '否定态度': 0, '肯定态度': 0
}
intent2attitude_359 = {
    '在操作': 0, '已购查询': 0, '咨询非卖险种': 0, '随便看看': 0, '为家人了解保险': 0, '对保险有需求': 0, '是否收费': 0,
    '如何查询保单': 0, '咨询其他保险': 0, '年龄不符': -1, '无意向调侃': 0, '以前有疾病现在好了，能买吗': 0, '重说': 0, '没钱': 0,
    '发票问题': 0, '没找到黄色服务通知': -1, '关于免赔额': 0, '医疗垫付问题': 0, '操作问题-操作目的': 0, '第2个月保费': 0,
    '不可理赔条件': 0, '挂断后操作': -1, '保障时效到期': 0, '保障额度': 0, '短信点不开': -1, '反驳营销介绍': 0, '生效日期': 0,
    '确认是否承保': 0, '不愿意点链接': -1, '续保费用': 0, '等待期': 0, '询问绿通': 0, '报销比例': 0, '疑难问题': 0, '续期交过了': 0,
    '已有顾问': 0, '可理赔条件': 0, '已经买过该产品': 0, '有需要再联系': 0, '不需要-无原因': -1, '在忙-可协商': 0, '客户会考虑': 0,
    '没听懂': 0, '已有其他商业保险': 0, '不需要-暂时/先': -1, '没收到短信': -1, '来源点错了': -1, '希望从头引导操作': 0, '肯定态度': 0,
    '否定态度': 0, '无态度': 0, '投保条件': 0, '保障时效': 0, '已经取消了': -1, '操作问题-操作麻烦': -1, 'NOINTENT': 0, '不用微信': -1,
    '没有网络': -1, '暂时不想操作': -1, '赠险相关问题': 0, '操作问题-不会操作': -1, '都有什么保障': 0, '投保有什么好处': 0,
    '担心自己被扣费': -1, '要钱就不要了': -1, '理赔标准': 0, '是否进口药都可以报销': 0, '是否属于商业保险': 0, '住院都能报吗': 0,
    '保费缴存周期': 0, '理赔流程': 0, '是否与现有保险冲突': 0, '报销信息': 0, '哪些医院可以报销': 0, '办理方式': 0, '办理是否要体检': 0,
    '赔过以后还能续保吗': 0, '是否全国内都保': 0, '是否可以为家人投保': 0, '需要连续续保': 0, '什么医疗保障': 0, '重大疾病都有哪些': 0,
    '断缴问题': 0, '我去其他渠道买': 0, '退款问题': -1, '售后问题': 0, '是否返本': 0, '理赔问题': 0, '保障问题': 0, '产品属性': 0,
    '保费问题': 0, '缴费问题': 0, '你们怎么还卖保险': 0, '同业': 0, '在忙-预约回访': 0, '非本人接听': -1, '在忙-快点说': 0,
    '强烈拒绝': -1, '确认平台': 0, '在忙-必须挂机': 0, '甲方是干什么的': 0, '公司在哪': 0, '我没有买过': -1, '买保险的意义': 0,
    '我买不了保险': -1, '什么时间联系': 0, '什么产品': 0, '什么平台': 0, '你是谁': 0, '怀疑号码': -1, '你怎么有我号码': 0, '联系方式': 0,
    '询问工号': 0, '是人还是机器人': 0, '客户要求转人工': 0, '打断倾听': 0, '打电话的目的': 0, '有人联系过我': 0, '加微信': 0,
    '发短信': 0, '智能语音客服': 0, '语音信箱': 0, '非本人': -1, '投诉': -1, '你是在卖保险吗': 0, '医保问题': 0, '有没有风险': 0,
    '关于活动': 0, '对保险有了解': 0, '我有医社保了': 0
}
intent2attitude_363 = {
    '要求坐席操作提额': 0, '咨询花呗借呗产品': 0, '额度够用': 0, '什么是银行流水提额': 0, '咨询甲方其他产品': 0, '提额费用': 0,
    '提额失败': -1, '查询多少次征信': 0, '是否需要抵押': 0, '房产信息获取的影响': 0, '什么是房产信息提额': 0, '查询征信': 0,
    '什么是征信提额': 0, '提额能提多少': 0, '系统问题-app问题': 0, '关于产品': 0, '关于活动': 0, '额度多少': 0, '操作问题-不会操作': -1,
    '什么平台': 0, '不需要-使用其他平台': -1, '不需要-不缺钱': -1, '不需要-会考虑': -1, '不需要-无原因': -1, '客户会考虑': 0,
    '打断倾听': 0, '语音信箱': 0, '询问工号': 0, '临时额度还是永久额度': 0, '别给我打电话了': -1, '投诉': -1, '有人联系过': 0,
    '已经注销': -1, '什么时间回访': 0, '如何提升额度': 0, '分期期数': 0, '提前还款': 0, '公司在哪': 0, '客户咨询是否能借款': 0,
    '申请渠道问题': 0, '额度问题-额度低': -1, '审核不过-年龄问题': -1, '怀疑平台': -1, '非本人操作': -1, '利息高': 0, '还款方式': 0,
    '你怎么有我号码': 0, '人还是机器人': 0, '转人工': 0, '产品是否合规': 0, '怎么注销': -1, '品牌反应': 0, '资金用途': 0,
    '在忙-主动邀约': 0, '是否能通过/使用': 0, '激活是否必须使用': 0, '强烈拒绝': -1, '还不起': -1, '在忙-快点说': 0, '加微信': 0,
    '已借款': 0, '已操作': 0, 'NOINTENT': 0, '打电话有什么目的': 0, '没听懂': -1, '年费问题': 0, '打的客户什么号': 0,
    '活动期限': 0, '是否有销售任务': 0, '系统问题-证件没带': 0, '在忙-无原因': 0, '在忙-有原因': 0, '要求反馈立刻处理': 0,
    '怀疑信息泄露': 0, '产品费用': 0, '个人费用': 0, '是否免费借款': 0, '还款提醒': 0, '客户会操作': 0, '有需要再联系': 0,
    '下款时间': 0, '要求挂机': 0, '敏感客群': 0, '在操作': 0
}
intent2attitude_dict = {
    '222': intent2attitude_222,
    '313': intent2attitude_313,
    '329': intent2attitude_329,
    '341': intent2attitude_341,
    '354': intent2attitude_354,
    '359': intent2attitude_359,
    '363': intent2attitude_363,
}
prompt_222 = [
    '销售员正在对用户进行360金融产品的营销，希望用户能够进行360金融产品的申请与使用',
    '销售人员正在向用户推销360金融产品，希望用户能够申请并使用',
    '销售人员正在为用户宣传360金融产品，并希望用户能够使用该产品',
    '销售人员正在向用户介绍360金融产品，并鼓励用户进行申请和使用',
    '销售人员正在与用户进行360金融产品的营销，期待用户能够积极参与申请和使用',
    '销售人员正在向用户推介360金融产品，希望用户能够体验和使用该产品',
    '销售人员正在劝说用户尝试使用360金融产品，希望用户能够接受并进行申请',
    '销售人员正在向用户展示360金融产品的优势，并希望用户能够尝试使用',
    '销售人员正在与用户进行360金融产品的推广，鼓励用户进行申请和使用',
    '销售人员正在为用户推销360金融产品，希望用户能够认可并进行申请和使用',
    '销售人员正在向用户介绍360金融产品的特点，并希望用户能够申请并使用该产品'
]
prompt_313 = [
'这位销售员正在向用户推销信用卡产品，希望用户能够申请并使用。',
'这名销售员正在劝说用户申请信用卡产品，希望用户能够使用。',
'这位销售员正在向用户宣传信用卡产品，希望用户能够申请并使用。',
'这名销售员正在推销信用卡产品，希望客户能够申请并使用。',
'这位销售员正在向用户推荐信用卡产品，希望用户能够配合申请并使用。',
'这名销售员正在劝说用户使用信用卡产品，希望用户能够申请。',
'这位销售员正在向用户推销信用卡产品，希望用户能够申请并长期使用。',
'这名销售员正在向用户推荐信用卡产品，希望用户能够申请并充分利用。',
'这位销售员正在向用户推销信用卡产品，希望用户能够申请并使用多种服务。',
'这名销售员正在劝说用户申请信用卡产品，希望用户能够充分利用该产品。',
]
prompt_329 = [
    '这位销售员正在邀请用户添加企业微信，希望用户能够同意。',
    '这名销售员正在要求客户添加企业微信，希望客户能够配合。',
    '这位销售员正在劝说用户添加企业微信，希望用户能够顺从。',
    '这名销售员正在请求客户添加企业微信，希望客户能够同意。',
    '这位销售员正在向用户发出邀请，希望用户能够添加企业微信。',
    '这名销售员正在恳求客户添加企业微信，希望客户能够配合。',
    '这位销售员正在向用户提出请求，希望用户能够添加企业微信。',
    '这名销售员正在劝说客户添加企业微信，希望客户能够同意。',
    '这位销售员正在向用户发出请求，希望用户能够添加企业微信。',
    '这名销售员正在要求客户添加企业微信，希望客户能够顺从。',
]
prompt_341 = [
    '销售员正在对用户进行赠险转短险的营销，用户之前领取过赠险，希望用户能够进行短险的办理',
    '销售人员正在向用户推销短期保险，希望用户能够申请办理',
    '销售人员正在为用户宣传转短期保险的优势，并鼓励用户进行办理',
    '销售人员正在与用户进行赠险转短险的推广，期待用户能够积极参与办理',
    '销售人员正在向用户介绍短期保险的特点，并希望用户能够申请并办理',
    '销售人员正在劝说用户尝试办理短期保险，希望用户能够接受并进行办理',
    '销售人员正在为用户推介短期保险，希望用户能够体验和使用该产品',
    '销售人员正在向用户展示短期保险的优势，并希望用户能够尝试办理',
    '销售人员正在与用户进行短期保险的营销，鼓励用户进行办理',
    '销售人员正在为用户推销转短期保险，希望用户能够认可并进行办理',
    '销售人员正在向用户介绍赠险转短险的优惠政策，并希望用户能够办理短期保险',
]
prompt_354 = [
    '这位销售员正在向用户推销养老社区产品，希望用户能够申请并使用。',
    '这名销售员正在劝说用户申请养老社区产品，希望用户能够使用。',
    '这位销售员正在向用户宣传养老社区产品，希望用户能够申请并使用。',
    '这名销售员正在推销养老社区产品，希望客户能够申请并使用。',
    '这位销售员正在向用户推荐养老社区产品，希望用户能够配合申请并使用。',
    '这名销售员正在劝说用户使用养老社区产品，希望用户能够申请。',
    '这位销售员正在向用户推销养老社区产品，希望用户能够申请并长期使用。',
    '这名销售员正在向用户推荐养老社区产品，希望用户能够申请并充分利用。',
    '这位销售员正在向用户推销养老社区产品，希望用户能够申请并使用多种服务。',
    '这名销售员正在劝说用户申请养老社区产品，希望用户能够充分利用该产品。',
]
prompt_359 = [
    '这位销售员正在向用户推销惠泽保险产品，希望用户能够申请并使用。',
    '这名销售员正在劝说用户申请惠泽保险产品，希望用户能够使用。',
    '这位销售员正在向用户宣传惠泽保险产品，希望用户能够申请并使用。',
    '这名销售员正在推销惠泽保险产品，希望客户能够申请并使用。',
    '这位销售员正在向用户推荐惠泽保险产品，希望用户能够配合申请并使用。',
    '这名销售员正在劝说用户使用惠泽保险产品，希望用户能够申请。',
    '这位销售员正在向用户推销惠泽保险产品，希望用户能够申请并长期使用。',
    '这名销售员正在向用户推荐惠泽保险产品，希望用户能够申请并充分利用。',
    '这位销售员正在向用户推销惠泽保险产品，希望用户能够申请并使用多种服务。',
    '这名销售员正在劝说用户申请惠泽保险产品，希望用户能够充分利用该产品。',
]
prompt_363 = [
    '该销售员正在向用户推销网商银行产品，希望用户能够申请并使用这些产品。',
    '销售员正在营销网商银行产品，希望用户能够利用这些产品进行申请。',
    '这位销售员正在向用户推荐网商银行产品，并希望用户能够申请并使用这些产品。',
    '销售员正在进行网商银行产品的销售推广，并希望用户能够申请并使用这些产品。',
    '该销售员正在宣传网商银行产品，希望用户能够使用这些产品并进行申请。',
    '销售员正在向用户介绍网商银行产品，并希望用户能够申请并使用这些产品。',
    '这位销售员正在向用户推销网商银行产品，希望用户能够利用这些产品进行申请和使用。',
    '销售员正在进行网商银行产品的推广，希望用户能够申请并使用这些产品。',
    '该销售员正在推销网商银行产品，希望用户能够使用并申请这些产品。',
    '销售员正在向用户宣传网商银行产品，希望用户能够申请并使用这些产品。',
]
prompt_dict = {
    '222': prompt_222,
    '313': prompt_313,
    '329': prompt_329,
    '341': prompt_341,
    '354': prompt_354,
    '359': prompt_359,
    '363': prompt_363,
}

intent_341_name = {
    '是否进口药都可以报销': 0, '是否收费': 0, '没钱': -1, '确认平台': 0,
    '操作问题-操作麻烦': -1, '二次不需要': -1, '有没有风险': 0, '没有网络': -1,
    '非本人操作': -1, '理赔问题': 0, '售后问题': 0, '什么软件': 0,
    '以前有疾病现在好了，能买吗': 0, '是否属于商业保险': 0,
    '赔过以后还能续保吗': 0, '挂断后操作': 0, '同业': 0, '报销比例': 0,
    '你是在卖保险吗': 0, '需要连续续保': 0, '有人联系过我': 0, '短信点不开': -1,
    '三次在忙': 0, '投保有什么好处': 0, '侵犯我隐私了': -1, '在操作': 1,
    '哪家公司承保': 0, '询问工号': 0, '操作问题-操作目的': 0, '等待期': 0,
    '是否全国内都保': 0, '重大疾病都有哪些': 0, '停一下，听我说': 0, '在忙-可协商': 0,
    '都有什么保障': 0, '什么是百万医疗、自费药': 0, '对保险有了解': 0, '医疗垫付问题': 0,
    '保险类型': 0, '发票问题': 0, '办理方式': 0, '你们怎么还卖保险': 0,
    '什么平台': 0, '理赔标准': 0, '发短信': 0, '产品属性': 0,
    '是否与现有保险冲突': 0, '不愿意点链接': -1, '保障时效': 0, '赠险相关问题': 0,
    '智能语音客服': 0, '我买不了保险': -1, '保费问题': 0, '保费缴存周期': 0,
    '确认是否承保': 0, '语音信箱': 0, '联系方式': 0, '客户会考虑': 0,
    '你怎么有我号码': 0, '不可理赔条件': 0, '要钱就不要了': -1, '是人还是机器人': 0,
    '第2个月保费': 0, '买保险的意义': 0, '什么医疗保障': 0, '是否返本': 0,
    '在忙-预约回访': 0, '非本人': -1, '加微信': 0, '公众号问题': 0,
    '重说': 0, '保障问题': 0, '我没有买过': -1, '操作问题-不会操作': -1,
    '生效日期': 0, '年龄不符': -1, '我有医社保了': 0, '什么产品': 0,
    '投诉': -1, '来源点错了': -1, '投保条件': 0, '理赔流程': 0,
    '没听懂': 0, '有需要再联系': 0, '非本人接听': -1, '续保费用': 0,
    '退款问题': 0, '是否可以为家人投保': 0, '不需要-暂时/先': -1, '公司在哪': 0,
    '已经取消了': -1, '不需要-无原因': -1, '你是谁': 0, '已有其他商业保险': 0,
    '保障时效到期': 0, '什么时间联系': 0, '可理赔条件': 0, '这是一个什么样的保险': 0,
    '保障额度': 0, '关于免赔额': 0, '报销信息': 0, '怀疑号码': -1,
    '强烈拒绝': -1, '在忙-快点说': 0, '非本人操作轮询': -1, '已经买过该产品': 0,
    '没收到短信': -1, '医保问题': 0, '关于活动': 0, '三次不需要': -1,
    '缴费问题': 0, '办理是否要体检': 0, '在忙-必须挂机': 0, '挂断后操作轮询': 0,
    '我去其他渠道买': 0, '客户要求转人工': 0, '暂时不想操作': -1, '哪些医院可以报销': 0,
    '住院都能报吗': 0, '断缴问题': 0, '打电话的目的': 0, '询问绿通': 0,
    '担心自己被扣费': 0, '如何查询保单': 0, '无意向调侃': 0, '续期交过了': 0,
    '疑难问题': 0, '反驳营销介绍': 0, '拒绝福利': -1, '已经关注公众号': 0,
    '希望从头引导操作': 0, '关于电话医生': 0, '关于体检卡': 0, '不用微信': -1,
    '没找到黄色服务通知': 0, '什么专享特权': 0, '什么是活跃度分数': 0
}
intent_222_name = {
    '关于产品': 0, '你怎么有我号码': 0, '审核不过-黑户': -1, '没听懂': 0,
    '已操作': 0, '系统问题-证件没带': 0, '什么时间回访': 0, '投诉': -1,
    '多次表示-客户会操作': 0, '不需要-会考虑': -1, '审核条件': 0, '系统问题-APP问题': 0,
    '特殊情况': 0, '链接短信': 0, '利息高': 0, '询问工号': 0,
    '申请渠道问题': 0, '怎么注销': 0, '还款方式': 0, '临时额度还是永久额度': 0,
    '客户会操作': 0, '身份证/银行卡没带': 0, '已激活': 0, '打电话有什么目的': 0,
    '生病': 0, '审核不过-担心通过不了': -1, '审核不过-无原因': -1, '操作问题-操作麻烦': 0, '降额问题': 0,
    '如何提升额度': 0, '下款时间': 0, '什么平台': 0, '要求挂机': 0,
    '关于活动': 0, '打的客户什么号': 0, '是否已经激活额度': 0, '语音信箱': 0,
    '不需要-不缺钱': -1, '非本人操作': -1, '怀疑平台': -1, '有人联系过': 0,
    '会考虑': 0, '优惠券使用方法': 0, '额度多少': 0, '公司在哪': 0,
    '分期期数': 0, '咨询京东其他产品': 0, '查询征信': 0, '转人工': 0, '拨打时间': 0, '有人打电话让注销金条账户': 0,
    '操作问题-不会操作': -1, '别给我打电话了': -1, '打断倾听': 0, '是否用过什么产品': 0,
    '在忙-无原因': 0, '客户咨询是否能借款': 0, '不需要-无原因': -1, '你找谁': 0,
    '是否能通过/使用': 0,
    '审核不过-年龄问题': -1, '已借款': 0, '加微信': 0, '年费问题': 0,
    '不会操作': -1, '有需要再联系': 0, '个人费用': 0, '敏感客群': 0,
    '活动期限': 0, '产品是否合规': 0, '怎么领取优惠券': 0, '激活是否必须使用': 0,
    '额度用完': 0, '产品费用': 0,  '不需要-使用其他平台': -1, '系统问题-app问题': 0,
    '资金用途': 0, '客户会考虑': 0, '提前还款': 0, '已经注销': -1,
    '怎么联系客服': 0, '系统问题-证件问题': 0, '还不起': 0, '人还是机器人': 0,
    '是否免费借款': 0, '无意向调侃用户': 0, '强烈拒绝': -1, '额度问题-额度低': 0,
    '已卸载APP': -1, '确认平台': 0, '在忙-主动邀约': 0, '在忙-有原因': 0,
    '在忙-快点说': 0, '没点过': -1, '品牌反应': 0, '我没有注册过': -1,
    '要求反馈立刻处理': 0, '没有企业': -1, '不想加陌生人': -1, '安全问题': 0,
    '激活费用': 0, '是否有销售任务': 0, '发票问题': 0, '怎么兑换': 0,
    '怀疑信息泄露': -1, '办过会员/是VIP': 0, '忘记了': -1, '还款提醒': 0,
    '担心给联系人打电话': -1, '快递问题': 0, '担心通过不了': -1, '在操作': 1,
    '担保费': 0, '生意或消费': 0, '让本人接电话': 0, '没有资金需求': -1,
}
intent_name = {
    '222': intent_222_name,
    '341': intent_341_name
}
attitude_dict = {'肯定': '肯定态度', '否定': '否定态度', '无明确回应': '不明态度',
                 '1': '肯定态度', '-1': '否定态度', '0': '不明态度'}


company_id_dict = {'2186': '222', '2144': '222', '2132': '222',
                   '2158': '341', '2199': '341', '2201': '341',
                   '2226': '363',
                   '2137': '329',
                   '2117': '313',
                   '2217': '359',
                   '2216': '354'}


def get_workspace_class(workspace_id):

    if workspace_id == '222':
        wb = load_workbook('./intent_data/jinrong_FAQ.xlsx')
    elif workspace_id == '313':
        wb = load_workbook('./intent_data/jingka_FAQ.xlsx')
    elif workspace_id == '329':
        wb = load_workbook('./intent_data/jiawei_FAQ.xlsx')
    elif workspace_id == '341':
        wb = load_workbook('./intent_data/baoxian_FAQ.xlsx')
    elif workspace_id == '354':
        wb = load_workbook('./intent_data/yanglao_FAQ.xlsx')
    elif workspace_id == '359':
        wb = load_workbook('./intent_data/huize_FAQ.xlsx')
    elif workspace_id == '363':
        wb = load_workbook('./intent_data/wangshang_FAQ.xlsx')


    ws = wb[wb.sheetnames[0]]

    intent_dict = dict()
    intent_query_dict = dict()
    for i, row in enumerate(ws.values):
        if i != 0:
            name = row[0].split(':')[-1]
            query = row[1]
            if name not in intent_dict:
                intent_dict[name] = 0
                intent_query_dict[name] = list()

            if query:
                intent_query_dict[name].append(query)

    return intent_dict, intent_query_dict


def process_msg(msg_content, speaker_type, label):
    FAQ_name = ''
    return_content = list()
    if speaker_type == 'IVR':
        for content in msg_content.split('|')[1:]:
            if content.split('#')[0].replace(' ', '').replace('}', '').replace('@@notbreak@@', '').replace(
                    '您不要挂电话，马上为您服务', '').replace('好的，您不要挂机，马上为您服务', ''):
                return_content.append(
                    content.split('#')[0].replace(' ', '').replace('}', '').replace('@@notbreak@@', '').replace(
                        '您不要挂电话，马上为您服务', '').replace('好的，您不要挂机，马上为您服务', ''))

        if 'FAQ:' in msg_content:
            FAQ_name = msg_content.split('FAQ:')[1].split('》')[0].split(']')[0]
    else:
        return_content.append(msg_content.split(']')[-1].replace('您不要挂电话马上为您服务', '').replace('哦好的您不要挂机啊马上为您服务。', ''))

    if ':' in FAQ_name:
        FAQ_name = FAQ_name.split(':')[-1]

    if '命中二次不需要' in msg_content and '用户主动表示:不需要-无原因' not in label:
        label += ',用户主动表示:不需要-无原因'
    if '命中一次同业' in msg_content and '用户主动表示:同业' not in label:
        label += ',用户主动表示:同业'
    if '二次在忙可协商' in msg_content and '用户主动表示:在忙-可协商' not in label:
        label += ',用户主动表示:在忙-可协商'
    if '二次已有保险' in msg_content and '用户主动表示:已有其他商业保险' not in label:
        label += ',用户主动表示:已有其他商业保险'
    if '四次不需要挂机' in msg_content and '用户主动表示:不需要' not in label:
        label += ',用户主动表示:不需要-无原因'
    if '命中一次强烈拒绝' in msg_content and '用户主动表示:强烈拒绝' not in label:
        label += ',用户主动表示:强烈拒绝'
    if '命中一次在忙-必须挂机' in msg_content and '用户主动表示:在忙-必须挂机' not in label:
        label += ',用户主动表示:在忙-必须挂机'
    if '肯定》' in msg_content and '用户肯定' not in label:
        label += ',坐席询问用户:某某某-用户肯定'
    if '否定》' in msg_content and '用户否定' not in label:
        label += ',坐席询问用户:某某某-用户否定'
    if '实体:明确同意' in msg_content:
        label += ',坐席询问用户:某某某-用户肯定'

    if FAQ_name and FAQ_name not in label:
        label = label + ',{}'.format(FAQ_name) if label else FAQ_name

    return '，'.join(return_content), label


def process_label(content_label):

    result_label = list()
    for label in content_label.split(','):
        if label.startswith('Q') or label.startswith('数字') or label.startswith('价格') or \
            label.startswith('时间段') or label.startswith('时间点') or label.startswith('年龄实体') or \
            label.startswith('发短信') or label in ['转人工', '挂机', '加黑名单'] or \
            '用户分类' in label or label.endswith(':'):
            continue
        result_label.append(label)

    return ','.join(result_label)


def process_label_return_single(labels, company_id):
    workspace = company_id_dict.get(company_id, '222')

    # 标签修复
    labels = labels.replace('用户主动表示:用户主动表示:', '用户主动表示:')
    labels = labels.replace('在忙-在忙', '在忙')
    labels = labels.replace('活动介绍-', '活动介绍')
    labels = labels.replace('促成1-', '促成1')
    labels = labels.replace('信收1-', '信收1')
    labels = labels.replace('多次表示-', '')
    labels = labels.replace('在忙-不需要-会考虑', '不需要-会考虑')
    labels = labels.replace('在忙-不需要-无原因', '不需要-无原因')
    labels = labels.replace('打电话什么目的', '打电话有什么目的')
    labels = labels.replace(' 在忙-无原因', '在忙-无原因')
    labels = labels.replace('用户主动表示:二次不需要', '用户主动表示:不需要-无原因')
    labels = labels.replace('用户主动表示:三次不需要', '用户主动表示:不需要-无原因')
    labels = labels.replace('用户主动表示:三次在忙', '用户主动表示:在忙-可协商')
    labels = labels.replace('用户表示在忙必须挂机', '用户表示在忙-必须挂机')

    label_set = set()
    for label in labels.split(','):
        if ('坐席询问用户' in label or '坐席主动询问' in label or '坐席劝服用户' in label):
            label = label.replace('用户表示不需要', '不需要-无原因')
            label = label.replace('用户询问什么平台', '什么平台')
            label = label.replace('用户询问什么产品', '什么产品')
            label = label.replace('用户询问你是谁', '你是谁')
            label = label.replace('用户表示', '用户')

            label_set.add('-'.join(label.split('-')[1:]).replace('用户', ''))
        elif ('用户主动' in labels):
            label_set.add(label.split(':')[-1])
        else:
            label_set.add(label)

    return_label = {'意图': '', '态度': '不明态度', '实体': ''}
    for label in list(label_set):
        if label in ['肯定', '否定', '无明确回应']:
            return_label['态度'] = attitude_dict[label]
        elif '实体' in label:
            return_label['实体'] = label
        elif label in intent_name[workspace]:
            return_label['意图'] = label
            return_label['态度'] = attitude_dict[str(intent_name[workspace][label])]

    label_output = ''
    for label in return_label:
        label_output += '{}:{};'.format(label, return_label[label])

    return label_output


# 讲对话记录转成输入字符串
def convert_dialogue_to_input_string(record_list, max_len=1000):
    input_string = ""
    # 倒序遍历record_list
    for record in record_list[::-1]:

        input_string = '{}\n{}'.format(record, input_string)
        # if len(input_string) > max_len:
        if '销售员' in record:
            break
    return input_string


def seat_sentence_transfer():
    with open('../data_dialogue/dilogue_data/script_strategy_dict.csv', 'r') as fp:
        reader = csv.reader(fp)

        seat_sentence_dict = dict()
        for i, line in tqdm.tqdm(enumerate(reader)):
            if i != 0:
                # print( line )
                seat_sentence_dict[line[0]] = line[1]

    # print( seat_sentence_dict )
    return seat_sentence_dict


def transfer_dialogue2json(file_path, company_id):
    workspace_id = company_id_dict[company_id]

    fp = open('./dialogue_data/{}_dialogue.csv'.format(workspace_id), 'w')
    writer = csv.writer(fp)

    # fp = open('./dialogue_data/{}_dialogue.txt'.format(workspace_id), 'w')

    wb = load_workbook(file_path)
    ws = wb[wb.sheetnames[0]]

    session_id_dict = dict()
    for i, row in tqdm.tqdm(enumerate(ws.values)):
        # if i == 1048570:
        # if i == 24341:
        # if i == 22042:
        if i == 6036:
            break

        if i != 0 and row[1]:
            session_id = row[1]
            role = row[2]
            content = row[4]
            label = row[6] if row[6] else row[5]


            if session_id not in session_id_dict:
                session_id_dict[session_id] = list()

            session_id_dict[session_id].append(
                [role, content, label if role == '销售员' else '']
            )

    train_data_list = []
    for session_id in tqdm.tqdm(session_id_dict):
        content_data = list()
        for row in session_id_dict[session_id]:
            role = row[0]
            content = row[1]
            label = row[2]
            # print( role, content )

            input_string = convert_dialogue_to_input_string(content_data)
            if role == '销售员' and label:

                # content = seat_sentence_dict[content]

                train_data = {}

                train_data["instruction"] = '下面是段销售员和用户的一次对话。{}。需要对用户的话术进行信息提取，信息包括意图，态度，实体，任何一种信息没有就输出空。'.format(
                    random.choice(prompt_dict[workspace_id]))
                train_data['input'] = input_string
                writer.writerow([input_string, ])
                # fp.writelines(input_string)
                train_data['output'] = label

                # train_data["output"] = model_label.split('用户标签')[0] if same_sign and same_sign == 1 else label.split('用户标签')[0]
                train_data_list.append(train_data)
                # print(train_data)


            content_data.append('{}:{}'.format(role, content if role == '用户' else '，'.join(content.split('，')[-2:])))

    print(len(train_data_list))
    utils.jdump(train_data_list, './dialogue_data/{}_0509_1.json'.format(company_id))


def clean_label_from_dialogue():


    wb = load_workbook('./dialogue_data/_2186_2023-04-10 00_00_00_2023-04-15 23_10_00_100000000.xlsx')
    ws = wb[wb.sheetnames[0]]

    wb_w = Workbook()
    ws_w = wb_w.active
    ws_w.append([
        '坐席话术', '话术标签'
    ])

    for i, row in tqdm.tqdm(enumerate(ws.values)):
        if i == 1048570:
            break

        if i != 0 and row[1]:
            customer_id = row[0]
            role = row[4]
            origin_sentence = row[5]
            label = process_label(row[7]) if row[7] else ''

            sentence, sentence_list, FAQ_name, label = process_msg(
                origin_sentence,
                'IVR' if (role == '销售员' and '槽位id' in origin_sentence) else role,
                label,
            )

            if label:
                if FAQ_name not in label:
                    FAQ_name = intent_name_dict[FAQ_name]
                    label += ',{}'.format(FAQ_name)

                label = process_label_return_single(label)
                if role == '销售员':
                    label = label2json(label)

                    if label.endswith(':') and '静音' not in origin_sentence:
                        print(origin_sentence)
            else:
                if FAQ_name:
                    label = FAQ_name
                else:
                    label = ''

            ws_w.append([
                row[0], row[1], row[2], row[3],
                role, origin_sentence, sentence, label
            ])

        elif i != 0 and not row[1]:
            ws_w.append([])

    wb_w.save('./dialogue_data/2186_0410.xlsx')


def label2json(labels):

    attitude_dict = {
        '用户肯定': 1,
        '用户否定': -1,
        '用户无明确回应': 0
    }

    # 初始化信息
    intention = ''
    attitude = 0
    entity = ''

    # 获取信息
    for label in labels.split(','):

        # FAQ标签获取信息
        if '用户主动询问' in label or '用户主动表示' in label:
            intention = label.split(':')[-1]
            attitude = intent_2186_name[label]
            # attitude = intent_2199_name[label]

        # 用户标签获取信息
        elif '坐席主动询问' in label or '坐席询问用户' in label or '坐席劝服用户' in label:
            attitude = attitude_dict[label.split('-')[-1]]

        # 实体标签获取信息
        else:
        #if '实体' in label:
            entity = label

    # print('intention:{};attitude:{};entity:{};tag:{}'.format(intention, attitude, entity, labels))
    return '意图:{};态度:{};实体:{};'.format(intention, attitude, entity)


def get_json_class_num(file_path, company_id):
    attitude_dict = {
        '-1': '否定',
        '0': '无明确回应',
        '1': '肯定',
    }

    class_dict, class_query_dict = get_workspace_class(company_id)

    json_data = utils.jload(file_path)
    for data in tqdm.tqdm(json_data):

        data_output = data['output']
        intent, attitude, entity, _ = data_output.split(';')
        intent = intent.split(':')[1]
        attitude = attitude.split(':')[1]
        entity = entity.split(':')[1]

        if entity:
            class_type = entity
        elif intent:
            class_type = intent
        else:
            class_type = attitude # attitude_dict[attitude]

        if class_type not in class_dict:
            class_dict[class_type] = 0
        class_dict[class_type] += 1

    wb = Workbook()
    ws = wb.active
    ws.append([
        '类名称', '数量'
    ])

    max_num = 0
    for class_name in tqdm.tqdm(class_dict):
        if class_name not in [] and '实体' not in class_name and class_dict[class_name] > max_num:
            max_num = class_dict[class_name]

        ws.append([
            class_name, class_dict[class_name]
        ])

    wb.save('./class_num.xlsx')
    return class_dict, max_num


def add_intent_dialogue_data(file_path, company_id):
    workspace_id = company_id_dict[company_id]

    class_dict, class_query_dict = get_workspace_class(workspace_id)
    class_dict, max_num = get_json_class_num(file_path, workspace_id)
    print(class_dict)

    # 获取替换语料倍数
    intent_times_dict = dict()
    for intent_name in class_dict:
        times = 1
        intent_num = class_dict[intent_name]
        while intent_num and intent_num * times < max_num:
            times += 1
        intent_times_dict[intent_name] = times

    # 数据中出现的意图进行扩充
    json_data = utils.jload(file_path)
    data_num = len(json_data)
    insert_data_list = list()
    for data in tqdm.tqdm(json_data):

        data_input = data['input']
        data_output = data['output']
        intent, attitude, entity, _ = data_output.split(';')
        intent = intent.split(':')[1]
        attitude = attitude.split(':')[1]
        entity = entity.split(':')[1]

        if intent and intent in class_query_dict:
            for i in range(intent_times_dict[intent]-1 if intent_times_dict[intent]-1<len(class_query_dict[intent]) else len(class_query_dict[intent])):
                try:
                    choice_query = random.choice(class_query_dict[intent])
                except Exception as err:
                    continue

                data_input = data_input.split('用户:')[:1]
                data_input.append(choice_query + '\n')
                data_input = '用户:'.join(data_input)

                data_output = '意图:{};态度:{};实体:{};'.format(intent, intent2attitude_dict[workspace_id][intent], entity)

                insert_data = {
                    'instruction': "下面是段销售员和用户的一次对话。{}。需要对用户的话术进行信息提取，信息包括意图，态度，实体，任何一种信息没有就输出空。".format(random.choice(
                        prompt_dict[workspace_id])),
                    'input': data_input,
                    'output': data_output,
                }
                insert_data_list.append(insert_data)

    # 数据中未出现的意图进行扩充
    for intent_name in tqdm.tqdm(class_dict):

        if intent_name in ['NOINTENT', '否定态度', '肯定态度', '无态度']:
            continue

        intent_num = class_dict[intent_name]
        if not intent_num:
            for i, query in enumerate(class_query_dict[intent_name]):
                if i > max_num:
                    break

                # try:
                index = random.randint(0, data_num-1)
                while 1:
                    intent = json_data[index]['output'].split(';')[0].split(':')[-1]
                    if intent and intent in class_query_dict:
                        data_input = json_data[index]['input']
                        data_input = data_input.split('用户:')[:1]
                        data_input.append(query + '\n')
                        data_input = '用户:'.join(data_input)

                        print(json_data[index])
                        data_output = '意图:{};态度:{};实体:;'.format(
                            intent_name, intent2attitude_dict[workspace_id][intent_name])

                        insert_data = {
                            'instruction': "下面是段销售员和用户的一次对话。{}。需要对用户的话术进行信息提取，信息包括意图，态度，实体，任何一种信息没有就输出空。".format(
                                random.choice(prompt_dict[workspace_id])),
                            'input': data_input,
                            'output': data_output,
                        }
                        insert_data_list.append(insert_data)

                        break

                    index += 1
                    if index == data_num:
                        index = 0
                # except Exception as err:

    print( len(insert_data_list) )
    utils.jdump(insert_data_list, './dialogue_data/{}_0509_intent.json'.format(company_id))


def check_nointent(file_path, company_id):
    def get_attitude(query, data_input):
        url = 'http://8.142.85.77:8680/nlu?session_id=-1&workspace=222&current_query={}'
        attitude = json.loads(requests.get(url.format(query)).text)['original_attitude']

        data_output = '意图:{};态度:{};实体:;'.format(
            '', attitude)

        insert_data = {
            'instruction': "下面是段销售员和用户的一次对话。{}。需要对用户的话术进行信息提取，信息包括意图，态度，实体，任何一种信息没有就输出空。".format(
                random.choice(prompt_dict[workspace_id])),
            'input': data_input,
            'output': data_output,
            'origin_query': query
        }
        insert_data_list.append(insert_data)
        progress_bar.update(1)

    workspace_id = company_id_dict[company_id]
    # 数据中出现的意图进行扩充
    json_data = utils.jload(file_path)
    data_num = len(json_data)
    insert_data_list = list()

    class_dict, class_query_dict = get_workspace_class(workspace_id)

    parameter_list = list()
    for query in tqdm.tqdm(class_query_dict['NOINTENT']):
        index = random.randint(0, data_num - 1)

        data_input = json_data[index]['input']
        # for i, data in enumerate(data_input.split('\n')[::-1]):
        #     if '销售员' in data:
        #         break
        # data_input = data_input.split('\n')[:-1 * i]
        data_input = data_input.split('用户:')[:1]
        data_input.append('用户:' + query)
        data_input = ''.join(data_input)

        parameter_list.append((
            [query, data_input], None
        ))

    progress_bar = tqdm.tqdm(total=len(parameter_list))
    request = threadpool.makeRequests(get_attitude, parameter_list)
    [pool.putRequest(req) for req in request]
    pool.wait()

    utils.jdump(insert_data_list, './dialogue_data/{}_0509_no_intent.json'.format(company_id))


if __name__ == '__main__':




    pass



